/*
 ============================================================================
 Name		: mssts.cpp
 Author	  : weihp
 Copyright   : cn.wei.hp@gmail.com
 Description : Exe source file
 ============================================================================
 */

//  Include Files  

#include "exadump.h"
#include "mssts.h"
#include <e32base.h>
#include <e32std.h>
#include <e32cons.h>			// Console

//  Constants

_LIT(KTextConsoleTitle, "Console");
_LIT(KTextFailed, " failed, leave code = %d");
_LIT(KTextPressAnyKey, " [press any key]\n");

//  Global Variables

LOCAL_D CConsoleBase* console; // write all messages to this


//  Local Functions

LOCAL_C void MainL()
	{

	console->Write(_L("ms ip capture start!\n"));
	
    CProtocolExadump* app =  new (ELeave) CProtocolExadump;
	CleanupStack::PushL(app);
	//CleanupStack::Pop(app);
	app->NetworkAttachedL();
	app->Open();
	
	console->Write(_L("open is ok!\n"));
	
	RMBufHookPacket ahookPacket=NULL;
	RMBufRecvInfo ahookInfo;
	
	console->Write(_L("hook is ok!\n"));
	
	RMBufSendPacket asendPacket;
	RMBufSendInfo asendInfo;
	
	console->Write(_L("send is ok!\n"));
	
	while(1==1)
	{
	  app->ApplyL(asendPacket,asendInfo);
	  app->ApplyL(ahookPacket,ahookInfo);
	  console->Write(_L("app is ok!\n"));
	}
	
	app->Close();
	CleanupStack::PopAndDestroy(app);
	
	}

LOCAL_C void DoStartL()
	{
	// Create active scheduler (to run active objects)
	CActiveScheduler* scheduler = new (ELeave) CActiveScheduler();
	CleanupStack::PushL(scheduler);
	CActiveScheduler::Install(scheduler);

	MainL();

	// Delete active scheduler
	CleanupStack::PopAndDestroy(scheduler);
	}

//  Global Functions

GLDEF_C TInt E32Main()
	{
	// Create cleanup stack
	__UHEAP_MARK;
	CTrapCleanup* cleanup = CTrapCleanup::New();

	// Create output console
	TRAPD(createError, console = Console::NewL(KTextConsoleTitle, TSize(
			KConsFullScreen, KConsFullScreen)));
	if (createError)
		{
		delete cleanup;
		return createError;
		}

	// Run application code inside TRAP harness, wait keypress when terminated
	TRAPD(mainError, DoStartL());
	if (mainError)
		console->Printf(KTextFailed, mainError);
	console->Printf(KTextPressAnyKey);
	console->Getch();

	delete console;
	delete cleanup;
	__UHEAP_MARKEND;
	return KErrNone;
	}

